package 滑动窗口;

import java.util.HashMap;

/**
 * 给定一个字符串 s ，请你找出其中不含有重复字符的 最长 子串 的长度。
 *
 * @author macy
 * @date 2025/11/4 11:43
 */
public class LongestSubNums {

    public static void main(String[] args) {

        int[] nums = {1,2,3,2,1};



    }


    public static int lengthOfLongestSubstring(String s) {
        int left=0;
        int result=0;
        HashMap<Character, Integer> map = new HashMap<>();
        for (int right = 0; right < s.length(); right++) {
            if(map.containsKey(s.charAt(right))){
                left=map.getOrDefault(s.charAt(right),0)+1;
                //left=Math.max(map.get(s.charAt(right))+1,left);
            }
            map.put(s.charAt(right),right);
            result=Math.max(result,right-left+1);
        }
        return result;
    }


    public int lengthOfLongestSubstring1(String s) {
        int left=0;
        int result=0;
        HashMap<Character, Integer> map = new HashMap<>();
        for (int right = 0; right < s.length(); right++) {
            //判断 前面的字符串中是否包含当前字符
            if(map.containsKey(s.charAt(right))){
                left=Math.max(map.get(s.charAt(right))+1,left);
            }
            map.put(s.charAt(right),right);
            result=Math.max(result,right-left+1);
        }
        return result;
    }
}
